#ifndef SEMAFORO_H_
#define SEMAFORO_H_

#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/types.h>

class Semaphore {

private:
	int id;

	int init (int initValue);

public:

	/**
	 * archivo: path de un archivo existente
	 * letra: un caracter cualquiera
	 *
	 * Deben ser iguales para todos los procesos que quieran compartir la misma memoria
	 *
	 * valorInicial: valor para inicializar el contador del semaforo
	 */
	Semaphore ( const char* file, char letra, int initValue );

	virtual ~Semaphore();

	/* operacion p: decrementa el semaforo */
	int wait ();

	/* operacion signal: incrementa el semaforo */
	int signal ();

	/* eliminar el semaforo
	 * si un proceso remueve el semaforo, todos los demas procesos se desbloquean*/
	void remove ();
};

#endif /* SEMAFORO_H_ */
